package cn.zhuzicc.reflect;


/**
 * @author zx
 * @version 1.0
 * @className: Test06
 * @description: 什么时候会发生类初始化
 * @date: 2021/4/27 16:26
 */
public class Test06 {
    static {
        System.out.println("Main类被加载");
    }

    public static void main(String[] args) throws ClassNotFoundException {
        // 1、主动引用
//        Son son = new Son();

        // 2、反射（主动引用）
//        Class<?> aClass = Class.forName("cn.zhuzicc.reflect.Son");


        // 不会发生类的初始化
        // 1.当通过子类引用父类的静态变量
//        System.out.println(Son.b);

        // 2.数组开辟内存空间并命名
//        Son[] arr = new Son[5];

        // 3.引用常量不会触发此类的初始化
        System.out.println(Son.M);
    }

}

class Super {

    static int b = 2;

    static {
        System.out.println("父类被加载");
    }
}

class Son extends Super{

    static {
        System.out.println("子类被加载");
        int m = 300;
    }

    static int m = 100;

    static final int M = 1;
}
